home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / FORMMGR.MOD < prev    next >
Encoding:
Modula Implementation  |  1993-02-06  |  3.5 KB  |  175 lines

  1. IMPLEMENTATION MODULE FormMgr;
  2.  
  3. (*
  4. AES Form Manager.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES     IMPORT IntIn,IntOut,Addr,crystal,Version,Integer;
  12. #if ST
  13. #if ABC
  14. #warning ...taking care of ABC-GEM
  15. FROM GrafMgr IMPORT GrafGrowBox,GrafShrinkBox;
  16. #endif
  17. #else
  18. FROM GrafMgr IMPORT GrafGrowBox,GrafShrinkBox;
  19. #endif
  20. FROM PORTAB  IMPORT SIGNEDWORD,UNSIGNEDWORD,ANYPOINTER;
  21. FROM RcMgr   IMPORT GRect;
  22. AES_SYSTEM_IMPORT
  23.  
  24. #if Seimet
  25. CONST F50 = 032010101H;
  26.       F51 = 033090100H;
  27.       F52 = 034010101H;
  28.       F53 = 035010100H;
  29.       F54 = 036000501H;
  30.       F55 = 037030301H;
  31.       F56 = 038020201H;
  32. #endif
  33.  
  34. PROCEDURE formdo(PTree: TreePtr;
  35.                  Start: ObjectIndex): SIGNEDWORD;
  36. BEGIN
  37.   IntIn.Array[0]:= Start;
  38.   Addr[0]:= PTree;
  39.   crystal(50,1,1,1);
  40.   RETURN IntOut[0]; (* double click -> bit #15 *)
  41. END formdo;
  42.  
  43. PROCEDURE formdial(    Dial: FormDials;
  44.                    VAR From: GRect;
  45.                    VAR To  : GRect);
  46. BEGIN
  47. #if ST
  48. #if ABC
  49.   IF Version() = 0220H THEN (* only GEM 2.x *)
  50.     CASE Dial OF
  51.       FmDGrow:
  52.         GrafGrowBox(From,To);
  53.         RETURN;
  54.     | FmDShrink:
  55.         GrafShrinkBox(From,To);
  56.         RETURN;
  57.     ELSE
  58.       ;
  59.     END;
  60.   END;
  61. #endif
  62. #else
  63.   IF Version() >= 0220H THEN
  64.     CASE Dial OF
  65.       FmDGrow:
  66.         GrafGrowBox(From,To);
  67.         RETURN;
  68.     | FmDShrink:
  69.         GrafShrinkBox(From,To);
  70.         RETURN;
  71.     ELSE
  72.       ;
  73.     END;
  74.   END;
  75. #endif
  76.  
  77.   WITH IntIn DO
  78.     Array[0]:= ORD(Dial);
  79.     WITH From DO
  80.       Array[1]:= GX;
  81.       Array[2]:= GY;
  82.       Array[3]:= GW;
  83.       Array[4]:= GH;
  84.     END;
  85.     WITH To DO
  86.       Array[5]:= GX;
  87.       Array[6]:= GY;
  88.       Array[7]:= GW;
  89.       Array[8]:= GH;
  90.     END;
  91.   END;
  92.   crystal(51,9,1,0);
  93. END formdial;
  94.  
  95. PROCEDURE formalert(DefBut  : UNSIGNEDWORD;
  96.                     PAlrtStr: ANYPOINTER): UNSIGNEDWORD;
  97. BEGIN
  98.   IntIn.Array[0]:= DefBut;
  99.   Addr[0]:= PAlrtStr;
  100.   crystal(52,1,1,1);
  101.   RETURN IntOut[0];
  102. END formalert;
  103.  
  104. PROCEDURE FormError(Error: SIGNEDWORD);
  105. BEGIN
  106. #if ST
  107.   IntIn.Array[0]:= -Error - 31; (* to PC-DOS error code *)
  108. #else
  109.   IntIn.Array[0]:= Error;
  110. #endif
  111.   crystal(53,1,1,0);
  112. END FormError;
  113.  
  114. PROCEDURE formcenter(    Tree: TreePtr;
  115.                      VAR Rect: GRect);
  116. BEGIN
  117.   Addr[0]:= Tree;
  118.   crystal(54,0,5,1);
  119.   WITH Rect DO
  120.     GX:= IntOut[1];
  121.     GY:= IntOut[2];
  122.     GW:= IntOut[3];
  123.     GH:= IntOut[4];
  124.   END;
  125. END formcenter;
  126.  
  127. PROCEDURE FormKeybd(    PTree : TreePtr;
  128.                         Ob    : ObjectIndex;
  129.                         NextOb: ObjectPtr;
  130.                         InKey : Key;
  131.                     VAR NewOb : ObjectPtr;
  132.                     VAR OutKey: Key): BOOLEAN;
  133. BEGIN
  134.   WITH IntIn DO
  135.     Array[0]:= Ob;
  136. #if packing
  137.     Array[1]:= InKey.ScanCode;
  138. #else
  139.     Array[1]:= InKey;
  140. #endif
  141.     Array[2]:= NextOb;
  142.   END;
  143.   Addr[0]:= PTree;
  144.   crystal(55,3,3,1);
  145.   NewOb:= IntOut[1];
  146. #if packing
  147.   OutKey.ScanCode:= IntOut[2];
  148. #else
  149.   OutKey:= IntOut[2];
  150. #endif
  151.   RETURN IntOut[0] > 0;
  152. END FormKeybd;
  153.  
  154. PROCEDURE FormButton(    PTree : TreePtr;
  155.                          Ob    : ObjectPtr;
  156.                          Clicks: UNSIGNEDWORD;
  157.                      VAR NextOb: ObjectPtr): BOOLEAN;
  158. BEGIN
  159.   WITH IntIn DO
  160.     Array[0]:= Ob;
  161.     Array[1]:= Clicks;
  162.   END;
  163.   Addr[0]:= PTree;
  164.   crystal(56,2,2,1);
  165.   NextOb:= IntOut[1];
  166.   RETURN IntOut[0] > 0;
  167. END FormButton;
  168.  
  169. BEGIN
  170.   FormDo:= formdo;
  171.   FormDial:= formdial;
  172.   FormAlert:= formalert;
  173.   FormCenter:= formcenter;
  174. END FormMgr.
  175.